/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package strategy.implementacao.acao;

import java.text.DecimalFormat;
import model.Jogador;
import servidorRMI.AddObservadorImp;
import servidorRMI.VerificaFalencia;
import strategy.interfaces.Acao;

/**
 *
 * @author Lucas
 */
public class Dividendo implements Acao {

    private Jogador jogador;
    private double valor;

    public Dividendo(double valor, Jogador jogador) {
        this.valor = valor;
        this.jogador = jogador;
    }

    @Override
    public void execute() {
        if (jogador.getMoney() >= valor) {
            jogador.setMoney(jogador.getMoney() + valor);
            DecimalFormat df = new DecimalFormat("0.00");
            AddObservadorImp.getInstancia().notificarMensagem(jogador.getName(),
                    "DIVIDENDO:Voce pagou R$: "
                    + df.format(valor * -1)
                    + " de imposto!");
        } else {
            if (jogador.getListaCampos().isEmpty()) {//Caso o jogador não possua mais bens para vender
                jogador.falido();
                AddObservadorImp.getInstancia().notificarMensagem(jogador.getName(),
                        "Você está falido!");
            } else { //Verifica se o jogador possui bens e faz a venda para o banco
                VerificaFalencia vf = new VerificaFalencia();
                vf.setJogador(jogador);
                if (vf.venderCompanias()) {
                    execute();
                } else if (vf.venderTerrenos()) {
                    execute();
                }
            }
        }

    }
}
